package com.tedu.interceptor.config;

import com.tedu.interceptor.interceptor.MyInterceptor;
import com.tedu.interceptor.interceptor.MyInterceptor1;
import com.tedu.interceptor.interceptor.MyInterceptor2;
import com.tedu.interceptor.interceptor.MyInterceptor3;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration//配置类,有优先启动权
public class Config implements WebMvcConfigurer {
    //该方法用于向SpringMVC中注册拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        /*
         注册拦截器
        *注册后，SpringMVC会使用该拦截器拦截请求
        如果我们没有明确拦截路径，则默认拦截所有请求
         */
        //registry.addInterceptor(new MyInterceptor());

        /*
            可以在注册拦截器的同时注册拦截路径，那么只有请求该路径时才会触发拦截器
        * */
        //registry.addInterceptor(new MyInterceptor())
        //        .addPathPatterns("/users/reg");


        /*
         此方法参数是变长参，可以添加多个拦截路径
        * */
//        registry.addInterceptor(new MyInterceptor())
//                .addPathPatterns("/users/reg","/users/login");


        /*
        可以使用“**”通配符，例如：/users/** ，表示匹配/users/下的所有路径
        后面的路径可以无限级，代表无论后面的请求路径是什么，都会触发拦截器
         */
//        registry.addInterceptor(new MyInterceptor())
//                .addPathPatterns("/users/**");

        /*
        可以使用excludePathPatterns()方法，表示不拦截某些路径，例如登录路径，注册路径等
        * */
//        registry.addInterceptor(new MyInterceptor())
//                .excludePathPatterns("/users/**")
//                .excludePathPatterns("/users/login","/users/logout");


        //注册三个拦截器，拦截所有请求，
        registry.addInterceptor(new MyInterceptor1());
        registry.addInterceptor(new MyInterceptor2());
        registry.addInterceptor(new MyInterceptor3());
    }
}
